Plan Operator Specialization using Reflective Compiler Techniques
نویسندگان
چکیده
Query-specific code generation has become a well-established approach to speed up query execution. However, this approach has two major drawbacks: (1) code generators are in general hard to write and maintain, (2) code generators lack the ability to deal with custom operators. To overcome these limitations, we suggest to return to the traditional execution approach with precompiled generic operators which are parametrized and composed to query plans at query compile time. Nevertheless, to optimize such plan operators and speed up their execution, we introduce a novel specialization approach using reflective compiler techniques. Employing code annotations and an additional compiler pass, we are able to track and replace low-level load instructions that refer to operator parameters which remain constant during execution time. By dissolving such up-to-now unknown constant variables, the compiler can further optimize the code and is able to determine query-specific optimized operators out of generic operator code. In our evaluation, we show that our approach speeds up the execution of the traditional generic operator approach in terms of execution time without facing the drawbacks of code generators.
منابع مشابه
Runtime Code Generation for Bytecode Specialization of Reflective Java Programs
Reflection in Java is a key technology for dealing with the continuously increasing demand for flexible and reusable software components. Unfortunately, however, a reflective method invocation or field access is considerably slower than a corresponding base-level access. Several researchers have noted that partial evaluation is useful for unfolding meta-level computation into the base-level, an...
متن کاملFragmental Specialization
Traditional offline program specialization relies on staging of a computation into two levels, static and dynamic. We present a generalization thereof where the static input data of one level is split up in a potentially unknown number of separate fragments. These fragments arrive in an unspecified order and are specialized as they arrive. Potential applications of the technique include separat...
متن کاملAbstract Multiple Specialization and Its Application to Program Parallelization
MÚLTIPLE SPECIALIZATION AND ITS APPLICATION TO PROGRAM PARALLELIZATION G E R M Á N PUEBLA AND MANUEL H E R M E N E G I L D O |> Program specialization optimizes programs for known valúes of the input. It is often the case that the set of possible input valúes is unknown, or this set is infinite. However, a form of specialization can still be performed in such cases by means of abstract interpre...
متن کاملRun-Time Program Specialization in Java Bytecode
Run-time specialization (RTS) is a technique that efficiently generates specialized programs with respect to runtime values. For efficiently generating specialized programs, RTS constructs compiled native code fragments called templates at compile-time, and generates a specialized program by merely copying the templates. The generated programs are, on the other hand, less efficient, since the t...
متن کاملHardware-Sensitive Scan Operator Variants for Compiled Selection Pipelines
The ever-increasing demand for performance on huge data sets forces database systems to tweak the last bit of performance out of their operators. Especially query compiled plans allow for several tuning opportunities that can be applied depending on the query plan and the underlying data. Apart from classical query optimization opportunities, it includes to tune the code using code optimization...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2015